home *** CD-ROM | disk | FTP | other *** search
-
- Internet Experiment Note 108
-
-
-
- Internet User Queues
-
-
-
- William W. Plummer
-
-
- Bolt Beranek and Newman, Inc.
- 50 Moulton Street
- Cambridge MA 02138
-
-
- 19 June 1979
-
-
-
-
- Internet User Queues
- William W. Plummer 19 June 1979
-
-
- The Internet JSYSes provide a facility for user programs to send
- and receive Internet packets. This set of calls is parallel to
- the "IMP special queue" calls, which dealt only with the ARPANET.
-
- In order to use the Internet calls a program must first assign an
- Internet Queue using ASNIQ (JSYS 756). The arguments for this
- JSYS are a set of mask and value words that determine what
- messages may be sent and which of the incoming messages will be
- delivered to the owning job. A successful ASNIQ returns with a
- handle (a small number, short-hand for the queue), in T1 which
- can then be fed to SNDIN and RCVIN (SeND InterNet, ReCeiVe
- InterNet).
-
- The arguments for SNDIN are an Internet Queue Handle and a
- pointer to a buffer of data in the caller's space. Word-0 of
- this buffer is the size of the buffer, including this count word.
- Words 1 through 5 must have a Version 4 Internet Header (see last
- page). Various fields of the header are checked for legality,
- the source host word is filled in, the Internet header checksum
- inserted. Then a network interface is selected and a local
- leader for that network is constructed in the packet. The packet
- is then queued for output on that interface and SNDIN returns.
-
- Basically, users have no control over which interface is selected
- for packet output and no knowledge of which interface an incoming
- packet arrived on. This is analogous to the ARPANET where users
- have no control over which IMPs a message actually goes through.
- There is an exception when a system is equipped with a "Raw
- Packet Interface" (RPI) which is used to connect to a remote
- gateway or a encryption device (such as a BCR). Bit zero in T1
- to ASNIQ will flag the queue as using the RPI rather than the
- normal interfaces.
-
- RCVIN takes the same arguments, an Internet Queue Handle and a
- buffer pointer. Normally, if no messages are already waiting on
- the queue, RCVIN waits. This wait can be defeated by turning on
- the "don't wait" control bit which forces an error return if no
- messages are waiting. When a message is available, it is
- delivered to the user- supplied buffer. The number of words
- filled is set into the left half of word-0 (the count word) of
- the buffer. Ordinarily this can be ignored, but if the message
- was too big for the buffer, this tells how much space would have
- been required.
-
- When finished, the queue handle can be released by using RELIQ.
- All handles owned by the job may be released by supplying -1 as
- the argument.
-
-
-
- - 1 -
-
-
-
-
- Internet User Queues
- William W. Plummer 19 June 1979
-
-
- All Internet JSYS calls use only the left 32 bits of each word.
- This is true of both the ASNIQ argument block and of data
- buffers.
-
-
- Messages left waiting on an input queue for a long time
- (currently 30 seconds) will be deleted. Also, a queue cannot
- hold very many messages (32, today). Flooding an Internet input
- queue to a slow receiver will result in dropped messages.
-
- Messages addressed to the sending host will ordinarily be
- delivered without sending over any network at all and are
- reasonably fast.
-
- User programs have no control over which network a given message
- will be sent out over. This decision will be made by the host
- gateway module on the basis of routing information supplied to it
- by other Internet gateways. This means that all networks to
- which a host is connected must go down before Internet
- communications will be completely stifled, and even then, forks
- within a job will be able to communicate due to the local
- delivery mechanism.
-
- Programs using Internet messages must be aware that messages are
- not necessarily delivered in the order in which they were sent,
- some messages may be dropped and others duplicated. Some may
- traverse a broadcast network and be clobbered by other packets,
- lightning, flaky intermediate gateways, etc. Thus, some higher
- level protocol is needed in most cases. TCP is one example, but
- there are others (the "Datagram Protocol", XNET, etc.).
-
- If a particular protocol is implemented in the monitor (e.g.,
- TCP) and that protocol module is turned on, no messages of that
- protocol type will be passed to users via Internet queues.
- Assigning a queue will still be possible, but no traffic will
- reach the user unless that protocol module is disabled.
-
-
- Not all Internet protocols have ports. If you are implementing
- one which does not, be sure that .IQPTM in the ASNIQ block
- contains a zero. If the protocol uses ports, they are expected
- to be in the first two 16-bit bytes following the Internet
- header, source port first and destination port second. The
- location of this word is found by adding the contents of the
- Internet data offset field to the address of the zeroth word of
- the Internet header.
-
-
-
-
- - 2 -
-
-
-
-
- Internet User Queues
- William W. Plummer 19 June 1979
-
-
- An additional feature of the Internet Queue Mechanism is that it
- (optionally) provides an logical host capability. That is,
- incoming messages can be demultiplexed on the basis of bits in
- the Internet Destination Host field. Exactly which bits are
- considered logical host specifier bits depends on the naming
- conventions in force in the network (area) to which the host in
- question is connected. For ARPANET hosts, the middle 8-bit byte
- of the 24-bit Internet Host is considered to be the logical host
- specifier.
-
- ASNIQ takes a specification of what numbers are to be used in the
- logical host bits of the source address for packets which are
- sent and received. When a packet is sent, the logical host bits
- are obtained from the user's packet and combined with the
- Internet Host Identifier for the host being used, the result
- being inserted into the Source Host field of the packet.
- Incoming packets are accepted by the Internet Layer if they match
- the Internet Host Identifier (Name) when the logical host bits of
- the destination address have been set to zero.
-
- It is illegal to assign an Internet Queue such that the Logical
- host mask includes any bits which are not part of the logical
- host field. ASNIQ will give an error return in this case.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - 3 -
-
-
-
-
- Internet User Queues
- William W. Plummer 19 June 1979
-
-
- Assign Internet Queue JSYS
-
- ;T1/ Pointer to queue descriptor block
- ; (Bit-0: use Raw Packet Interface)
- ;T2/ (Unused, must be 0)
- ;T3/ (Unused, must be 0)
- ;
- ; ASNIQ (JSYS 756)
- ;Ret+1: Failed. Error code in T1.
- ;Ret+2: Success. Internet queue handle in T1.
-
- Format of a queue descriptor block:
-
- Word offset Name Contents
-
- 0 .IQPRV Internet protocol number in
- bit 24-31. Others should be 0.
-
- 1 .IQFHV Internet foreign host value word in
- bits 0-31.
-
- 2 .IQSHV Internet source host value word in
- bits 0-31. Used for logical host selection.
-
- 3 .IQPTV Internet port value word. Local port
- value in bits 0-15, foreign port in 16-31.
-
- 4 .IQPRM Mask word corresponding to .IQPRV.
-
- 5 .IQFHM Mask word corresponding to .IQFHV
-
- 6 .IQSHM Mask word corresponding to .IQSHV
-
- 7 .IQPTM Mask word corresponding to .IQPTV
- (Use 0 for portless protocols)
-
- The mask words specify those bit positions where an exact match
- is required. Thus, one can make .IQFHM contain 0 in order to
- talk to all Internet hosts. Or by making say the low 3 bits of
- the local port mask word be 0, one owns eight ports. Note that
- an error will result unless the current QDB differs in the masked
- in bits from all other Internet queues which are assigned at the
- instant the ASNIQ is issued.
-
- Possible errors:
-
- 600737,NTWZX1,NET WIZARD capability required
- 600740,ASNSX1,All Internet queues in use
-
-
- - 4 -
-
-
-
-
- Internet User Queues
- William W. Plummer 19 June 1979
-
-
- 600741,ASNSX2,Conflict with some other job (# in AC2)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - 5 -
-
-
-
-
- Internet User Queues
- William W. Plummer 19 June 1979
-
-
- Release Internet Queue JSYS
-
- ;T1/ An Internet Queue Handle or -1 for all
- ;T2/ (Not used. Must be 0)
- ;T3/ (Not used. Must be 0)
- ;
- ; RELIQ (JSYS 757)
- ;Ret+1: Failure. Error code in T1.
- ;Ret+2: Success.
-
- This JSYS releases ownership of an Internet queue so that other
- jobs can assign it. Note that neither the RESET JSYS nor the
- EXEC RESET command execute RELIQs. Thus, once the queue is
- assigned, it stays assigned until the job logs out.
-
- Possible errors:
-
- 600742,SQX1,Internet queue handle out of range
- 600743,SQX2,Internet queue not assigned
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - 6 -
-
-
-
-
- Internet User Queues
- William W. Plummer 19 June 1979
-
-
- Send an Internet Message JSYS
-
- ;T1/ Internet Queue Handle
- ;T2/ Pointer to buffer containing message
- ;T3/ (Not used. Must be 0.)
- ;
- ; SNDIN (JSYS 754)
- ;Ret+1: Failure. Error code in T1.
- ;Ret+2: Success.
-
- The buffer must contain a word count in the right half of word-0,
- a valid Internet header in words 1 through 5, and possibly some
- data in words 6 and following. If port filtering is being used
- (.IQPTM was non-zero for ASNIQ), the ports must be located in the
- word following the Internet header. The address of this word is
- found by adding the address of word-1 in the buffer to the number
- in the Internet data offset field.
-
- The monitor fills in the source host field in the packet and also
- the Internet header checksum. The rest of the header is what is
- supplied by the user.
-
- Possible errors:
-
- 600742,SQX1,Internet queue handle out of range
- 600743,SQX2,Internet queue not assigned
- 600732,SNDIX1,Invalid message size
- 600733,SNDIX2,Insufficient system resources (No buffers available)
- 600735,SNDIX4,Invalid header value for this queue
- (Includes Internet Packet Length too big, Data offset
- too small, filtering on ports but packet length says
- packet does not contain a port word, and header does
- not fit the ASNIQ arguments).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - 7 -
-
-
-
-
- Internet User Queues
- William W. Plummer 19 June 1979
-
-
- Receive Internet Message JSYS
-
-
- ;T1/ Flags,,Internet Queue Handle
- ; Bit-0: On to cause fail return instead of waiting
- ;T2/ Pointer to buffer where message will be put
- ;T3/ (Not used. Must be 0.)
- ;
- ; RCVIN (JSYS 755)
- ;Ret+1: Failure. Error code in T1.
- ;Ret+2: Success.
-
- Each RCVIN gets one message from the named queue. These messages
- match the values in the queue descriptor block when masked by the
- mask words in the block. The number of words filled plus one
- (counting the count word) is placed in the left half of word-0 of
- the buffer. If the message was too big as determined by the
- Internet data length field, as much as will fit in the buffer is
- transferred and an error return given. No retry for the same
- message is possible.
-
- Possible errors:
-
- 600742,SQX1,Internet queue handle out of range
- 600743,SQX2,Internet queue not assigned
- 600732,SNDIX1,Invalid message size
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - 8 -
-
-
-
-
- Internet User Queues
- William W. Plummer 19 June 1979
-
-
- ; The following structure definitions have been excerpted from
- ; the file INPAR.MAC which is used in building TENEX and TOPS20
- ; monitors with Internet code. Those who are unfamiliar with the
- ; structure facility should refer to SYS:MACSYM.MAC. Basically,
- ; DEFSTR(Name,Location,Bit,Size) defines a structure called Name.
- ; This field is held in the word (possibly an index) at Location.
- ; The right-hand bit number is Bit and the field is Size bits wide.
- ; A typical reference to the data offset field might be: LOAD T1,PIDO,(PKT)
- ; where PKT is an index register which points at the zero-th word
- ; of the structure.
- ; Word offsets:
-
- .IPKVR==0 ; Word with version, type of service, etc
- .IPKSG==1 ; Word with segmentation info
- .IPKPR==2 ; Word with time to live, checksum, protocol
- .IPKSH==3 ; Word with source host
- .IPKDH==4 ; Word with destination host
-
- DEFSTR(PIVER,.IPKVR,3,4) ; PACKET.INTERNET.VERSION
- DEFSTR(PIDO,.IPKVR,7,4) ; PACKET.INTERNET.DATA-OFFSET
- DEFSTR(PITOS,.IPKVR,15,8) ; PACKET.INTERNET.TYPE-OF-SERVICE
- ; Overlays for the above:
- DEFSTR(PIPRI,.IPKVR,9,2) ; PACKET.INTERNET.PRIORITY
- DEFSTR(PISVD,.IPKVR,10,1) ; PACKET.INTERNET.STREAM-VS-DATAGRAM
- DEFSTR(PIREL,.IPKVR,12,2) ; PACKET.INTERNET.RELIABILITY
- DEFSTR(PISVR,.IPKVR,13,1) ; PACKET.INTERNET.SPEED-VS-RELIABILITY
- DEFSTR(PISPD,.IPKVR,15,2) ; PACKET.INTERNET.SPEED-OF-DELIVERY
- DEFSTR(PIPL,.IPKVR,31,16) ; PACKET.INTERNET.PACKET-LENGTH
- DEFSTR(PISID,.IPKSG,15,16) ; PACKET.INTERNET.SEGMENT-ID
- DEFSTR(PIFLG,.IPKSG,18,3) ; PACKET.INTERNET.FLAGS
- ; Overlays for the above:
- ; Unused bit
- DEFSTR(PIDF,.IPKSG,17,1) ; PACKET.INTERNET.DONT-FRAGMENT
- DEFSTR(PIMF,.IPKSG,18,1) ; PACKET.INTERNET.MULTIFRAGMENT
- DEFSTR(PIFO,.IPKSG,31,13) ; PACKET.INTERNET.FRAGMENT-OFFSET
- DEFSTR(PITTL,.IPKPR,7,8) ; PACKET.INTERNET.TIME-TO-LIVE
- DEFSTR(PIPRO,.IPKPR,15,8) ; PACKET.INTERNET.PROTOCOL
- DEFSTR(PICKS,.IPKPR,31,16) ; PACKET.INTERNET.HEADER-CHECKSUM
- DEFSTR(PISH,.IPKSH,31,32) ; PACKET.INTERNET.SOURCE-HOST
- ; Overlays for above:
- DEFSTR(PISHN,.IPKSH,7,8) ; PACKET.INTERNET.SOURCE.NET
- DEFSTR(PISHT,.IPKSH,31,24) ; PACKET.INTERNET.SOURCE.HOST
- DEFSTR(PIDH,.IPKDH,31,32) ; PACKET.INTERNET.DESTINATION-HOST
- ; Overlays for above:
- DEFSTR(PIDHN,.IPKDH,7,8) ; PACKET.INTERNET.DESTINATION.NET
- DEFSTR(PIDHT,.IPKDH,31,24) ; PACKET.INTERNET.DESTINATION.HOST
-
-
-
-
- - 9 -
-
- -------
-